﻿#include <iostream>
using namespace std;
int* FindSegment(int arr[], int sz)
{
	int p1 = -1;
	int p2 = -1;
	int max = arr[0];
	int min = arr[sz - 1];
	//扩展右端点，更新历史最高，最要右侧出现比历史最高低的，就应该将右边界扩展到此处
	for (int i = 0; i < sz; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
		}
		//只要低于历史高峰，就要扩展需排序区间的右端点
		if (arr[i] < max)
		{
			p2 = i;
		}
	}
	//找左端点，更新历史最低，只要左侧出现比历史最低高的，就将左边界扩展到此处
	for (int i = sz - 1; i >=0;i--)
	{
		if (arr[i] < min)
		{
			min = arr[i];
		}
		if (arr[i] > min)
		{
			p1 = i;
		}
	}
	if (p1 == -1)
	{
		return new int[] {0, 0};
	}
	else
		return new int[] {p1, p2};
}
int main()
{
	int arr1[] = { 1,4,6,5,9,10 };
	int arr2[] = { 1,2,3,4,5,6 };
	int arr3[] = { 1,5,3,4,2,6,7 };
	int arr4[] = { 3,2,5,6,7,8 };
}